Automatic Verification of Erlang-Style Concurrency
نویسندگان
چکیده
This paper presents an approach to verify safety properties of Erlang-style, higher-order concurrent programs automatically. Inspired by Core Erlang, we introduce λACTOR, a prototypical functional language with pattern-matching algebraic data types, augmented with process creation and asynchronous message-passing primitives. We formalise an abstract model of λACTOR programs called Actor Communicating System (ACS) which has a natural interpretation as a vector addition system, for which some verification problems are decidable. We give a parametric abstract interpretation framework for λACTOR and use it to build a polytime computable, flow-based, abstract semantics of λACTOR programs, which we then use to bootstrap the ACS construction, thus deriving a more accurate abstract model of the input program. We have constructed Soter, a tool implementation of the verification method, thereby obtaining the first fully-automatic, infinite-state model checker for a core fragment of Erlang. We find that in practice our abstraction technique is accurate enough to verify an interesting range of safety properties. Though the ACS coverability problem is EXPSPACE-complete, Soter can analyse these verification problems surprisingly efficiently.
منابع مشابه
Semi-Automated Verification of Erlang Code
Erlang is a functional programming language with support for concurrency and message passing communication that is widely used at Ericsson for developing telecommunication applications. We consider the challenge of verifying temporal properties of Erlang programs which are used to implement systems with dynamically evolving process structures and unbounded data. This is a hard task, which requi...
متن کاملA Language-oriented Approach to Teaching Concurrency
This paper argues in favour of a language-oriented approach to teach the principles of concurrency to graduate students. Over the past years, the popularity of programming languages that promote a functional programming style has steadily grown. We want to promote the use of such languages as the appropriate basic tools to deal with the “multicore revolution”. We describe some of these programm...
متن کاملErlang Behaviours: Programming with Process Design Patterns
Erlang processes run independently of each other, each using separate memory and communicating with each other by message passing. These processes, while executing different code, do so following a number of common patterns. By examining different examples of Erlang-style concurrency in client/server architectures, we identify the generic and specific parts of the code and extract the generic c...
متن کاملExploring Erlang Style Concurrency in Ruby
This paper introduces Stage, a Ruby implementation of Actors inspired by the concurrency support in the Erlang programming language. This implementation demonstrates how dynamic language features can be used to implement convenient and expressive concurrency support. Stage has several interesting features that contribute to this expressiveness, including: (1) pattern based support for receiving...
متن کاملEquational Abstractions for Model Checking Erlang Programs
This paper provides a contribution to the formal verification of programs written in the concurrent functional programming language Erlang, which is designed for telecommunication applications. It presents a formal description of this language in Rewriting Logic, a unified semantic framework for concurrency which is semantically founded on conditional term rewriting modulo equational theories. ...
متن کاملذخیره در منابع من
با ذخیره ی این منبع در منابع من، دسترسی به آن را برای استفاده های بعدی آسان تر کنید
عنوان ژورنال:
دوره شماره
صفحات -
تاریخ انتشار 2013